1. Field of the Invention
The present invention relates to a computer system and, more particularly, to a method, system, and computer program product for enhancing the availability of instant messaging.
2. Description of the Related Art
Instant messaging systems provide for instant, real-time communication between users who are connected to the system through an on-line or electronic networking environment. Examples of instant messaging systems include Yahoo! Messenger, AOL Instant Messenger, and Lotus Sametime. Such systems are becoming quite popular among users of networks such as the Internet, World Wide Web (hereinafter “web”), and internal intranets because they are easy to use and provide a simple way for one user to send a message to another user.
Instant messaging systems provide real-time awareness of who is logged on. Typically, an instant messaging system (hereinafter “IMS”) user has an address book or “buddy list” containing names and/or nicknames for those people with whom he or she communicates. The entries in this address book are used for selecting a message recipient. The IMS typically indicates, using a visual cue (such as different icons or different fonts), which of the people are logged on to the system and which are not. For a message to be sent from a sending user to a receiving user, typically both users must be logged on to an IMS (which may be the same IMS, or a different IMS).
With message applications becoming more prevalent in a society that demands real-time communication methods, the need to ensure maximum availability for these applications has become paramount. Many businesses now incorporate IMS's into their “repertoire” of business communication tools, and employees of such businesses have come to rely on the ability to communicate, via computer, on a real-time basis, and to be able to “leave messages” on the desktop computer of an absent recipient such that when the recipient returns, the recipient may immediately respond, and, if the sender is available, have an immediate dialog.
Typical IMS's utilize a message infrastructure that depends upon a centralized IM server to act as the “traffic cop”, that is, directing the messages from the sender to the recipient and overall coordination of the IM session. If the central server is not available, the sender's message has no way of knowing how to get to its intended destination.
The coordination function operates as follows. When any IM client connects to the IM server, the server obtains “connection state information” (also referred to as “CSI”) for the client that is connecting to the IM server. Typically this involves performing a network look-up of the IP address of the connecting IM client. For that instant messaging session, the IM server knows how to route traffic for that particular IM client. When an IM client (the sender) sends a message to another IM client (the recipient), the message is routed through the IM server. The IM server then sends the message to the recipient using the communications state information that the IM server looked up and maintains.
The connection state information is temporarily stored by the IM server during the chat session, that is, the IM server only keeps it available for that IM chat session. As soon as the user logs off (or shuts down the IM client) the connection state information is lost. In addition, as described above, where the IM server is unavailable, IM clients cannot connect to the IM server to send or receive messages. To increase the availability of IM servers generally, expensive clustering solutions (i.e., the shared use of multiple servers) can be utilized, thereby increasing the availability of alternate servers when a primary server is not functioning. However, this level of redundancy increases costs and requires more maintenance, etc.
Peer-to-peer networks exist whereby, if a sender knows, in advance, the IP address of a recipient, the sender can directly connect to the recipient and bypass the IM server altogether. This functions adequately; however, it requires that participants in the IM session know ahead of time, and manually input, the IP address of the party(s) to which they desire to connect. This is inconvenient and requires significant administrative action on the part of users of the system to maintain IP addresses for people with whom they wish to communicate. The problem becomes even more complex because many users may access their computers from multiple locations (e.g., work, home, on the road, etc.) and thus have multiple IP addresses associated with their on-line sessions.
Accordingly, it would be desirable to have a simple, user-friendly way to identify, access, and store connection state information of IM users with little or no reliance on an IM server to search for and use the connection state information for communicating between IM users.